package com.java.jvm.memory;

import java.util.concurrent.TimeUnit;
//案例演示：逃逸分析
//JVM参数设计
//-XX:+DoEscapeAnalysis 参数为逃逸分析参数(JDK8中默认开启了逃逸分析)
//逃逸分析后，未逃逸的小对象可以直接分配在栈上，这样会减少对象在堆中的分配，提高对象分配速度，同时会减少GC次数
//-Xms128m -Xmx128m -XX:+DoEscapeAnalysis -XX:+PrintGC
public class ObjectStackAllocationTests {
    public static void main(String[] args) throws InterruptedException {
        long t1=System.currentTimeMillis();
        for(int i=0;i<10000000;i++){
            alloc();
        }
        System.out.println("花费的时间为:"+(System.currentTimeMillis()-t1));
        //TimeUnit.SECONDS.sleep(5);
    }
    static void alloc(){
        //方法内部创建了一个小对象，这个对象只在方法内部应用，外部没有任何引用。
        byte[] data=new byte[10];//未逃逸对象(可以分配在栈上)
    }
}
